home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / batchut / errlvl12.zip / ERRLVL.ASM next >
Assembly Source File  |  1994-03-08  |  34KB  |  879 lines

  1. ;--------------------------------------------------------------------------;
  2. ;  Program:    ErrLvl  .Asm                                                ;
  3. ;  Purpose:    Displays value of previous ERRORLEVEL.                      ;
  4. ;  Notes:      Compiles under TURBO Assembler, v3.0. Tested under          ;
  5. ;                 MS/PC-DOS v3.30, v4.0, and v5.0.                         ;
  6. ;  Status:     Released into the public domain. Enjoy! If you use it,      ;
  7. ;                 let me know what you think. You don't have to send       ;
  8. ;                 any money, just comments and suggestions.                ;
  9. ;  Updates:    13-Jun-89, v1.0, GAT                                        ;
  10. ;                 - initial version.                                       ;
  11. ;              08-Jul-90, GAT                                              ;
  12. ;                 - added macros to push/pop registers.                    ;
  13. ;              28-Aug-90, v1.1a, GAT                                       ;
  14. ;                 - put equates and macros in separate files.              ;
  15. ;                 - put common routines in libs.                           ;
  16. ;              28-Dec-90, v1.2a, GAT                                       ;
  17. ;                 - added support for DOS v4.0.                            ;
  18. ;              15-Oct-91, v1.2b, GAT                                       ;
  19. ;                 - revised include file names.                            ;
  20. ;                 - added support for DOS v5.0.                            ;
  21. ;              03-Jul-93, v1.2c, GAT                                       ;
  22. ;                 - compiled with TASM v3.0.                               ;
  23. ;                 - version number now comes from makefile.                ;
  24. ;                 - specified ??date in lowercase.                         ;
  25. ;              07-Jul-93, v1.2d, GAT                                       ;
  26. ;                 - added support for DOS v6.0.                            ;
  27. ;--------------------------------------------------------------------------;
  28.  
  29. ;--------------------------------------------------------------------------;
  30. ;  Author:     George A. Theall                                            ;
  31. ;  SnailMail:  TifaWARE                                                    ;
  32. ;              610 South 48th St                                           ;
  33. ;              Philadelphia, PA.  19143                                    ;
  34. ;              U.S.A.                                                      ;
  35. ;  E-Mail:     george@tifaware.com                                         ;
  36. ;              theall@popmail.tju.edu                                      ;
  37. ;              theall@mcneil.sas.upenn.edu                                 ;
  38. ;              george.theall@satalink.com                                  ;
  39. ;--------------------------------------------------------------------------;
  40.  
  41. %NEWPAGE
  42. ;--------------------------------------------------------------------------;
  43. ;                          D I R E C T I V E S                             ;
  44. ;--------------------------------------------------------------------------;
  45. DOSSEG
  46. MODEL                tiny
  47.  
  48. IDEAL
  49. LOCALS
  50. JUMPS
  51.  
  52. FALSE               EQU       0
  53. TRUE                EQU       NOT FALSE
  54. BELL                EQU       7
  55. BS                  EQU       8
  56. TAB                 EQU       9
  57. CR                  EQU       13
  58. LF                  EQU       10
  59. ESCAPE              EQU       27             ; nb: ESC is a TASM keyword
  60. SPACE               EQU       ' '
  61. KEY_F1              EQU       3bh
  62. KEY_F2              EQU       3ch
  63. KEY_F3              EQU       3dh
  64. KEY_F4              EQU       3eh
  65. KEY_F5              EQU       3fh
  66. KEY_F6              EQU       40h
  67. KEY_F7              EQU       41h
  68. KEY_F8              EQU       42h
  69. KEY_F9              EQU       43h
  70. KEY_F10             EQU       44h
  71. KEY_HOME            EQU       47h
  72. KEY_UP              EQU       48h
  73. KEY_PGUP            EQU       49h
  74. KEY_LEFT            EQU       4bh
  75. KEY_RIGHT           EQU       4dh
  76. KEY_END             EQU       4fh
  77. KEY_DOWN            EQU       50h
  78. KEY_PGDN            EQU       51h
  79. KEY_INS             EQU       52h
  80. KEY_DEL             EQU       53h
  81. KEY_C_F1            EQU       5eh
  82. KEY_C_F2            EQU       5fh
  83. KEY_C_F3            EQU       60h
  84. KEY_C_F4            EQU       61h
  85. KEY_C_F5            EQU       62h
  86. KEY_C_F6            EQU       63h
  87. KEY_C_F7            EQU       64h
  88. KEY_C_F8            EQU       65h
  89. KEY_C_F9            EQU       66h
  90. KEY_C_F10           EQU       67h
  91. KEY_C_LEFT          EQU       73h
  92. KEY_C_RIGHT         EQU       74h
  93. KEY_C_END           EQU       75h
  94. KEY_C_PGDN          EQU       76h
  95. KEY_C_HOME          EQU       77h
  96. KEY_C_PGUP          EQU       84h
  97. KEY_F11             EQU       85h
  98. KEY_F12             EQU       86h
  99. KEY_C_F11           EQU       89h
  100. KEY_C_F12           EQU       8ah
  101. @16BIT              EQU       (@Cpu AND 8) EQ 0
  102. @32BIT              EQU       (@Cpu AND 8)
  103. NOWARN RES
  104. MACRO    PUSHA                               ;; Pushs all registers
  105.    IF @Cpu AND 2                             ;;  if for 80186 or better
  106.       pusha                                  ;;   use regular opcode
  107.    ELSE                                      ;;  else
  108.       push ax cx dx bx sp bp si di           ;;   nb: order matters!
  109.                                              ;;   nb: SP is not original!
  110.    ENDIF
  111. ENDM
  112. MACRO    POPA                                ;; Pops all registers
  113.    IF @Cpu AND 2                             ;;  if for 80186 or better
  114.       popa                                   ;;   use regular opcode
  115.    ELSE                                      ;;  else
  116.       pop di si bp bx bx dx cx ax            ;;   nb: order matters!
  117.                                              ;;   nb: don't pop SP!
  118.    ENDIF
  119. ENDM
  120. NOWARN RES
  121. MACRO    ZERO     RegList                    ;; Zeros registers
  122.    IRP      Reg, <RegList>
  123.          xor      Reg, Reg
  124.    ENDM
  125. ENDM
  126.  
  127. DOS                 EQU       21h            ; main MSDOS interrupt
  128. STDIN               EQU       0              ; standard input
  129. STDOUT              EQU       1              ; standard output
  130. STDERR              EQU       2              ; error output
  131. STDAUX              EQU       3              ; COM port
  132. STDPRN              EQU       4              ; printer
  133. TSRMAGIC            EQU       424bh          ; magic number
  134. STRUC     ISR
  135.           Entry     DW        10EBh          ; short jump ahead 16 bytes
  136.           OldISR    DD        ?              ; next ISR in chain
  137.           Sig       DW        TSRMAGIC       ; magic number
  138.           EOIFlag   DB        ?              ; 0 (80) if soft(hard)ware int
  139.           Reset     DW        ?              ; short jump to hardware reset
  140.           Reserved  DB        7 dup (0)
  141. ENDS
  142. STRUC     ISRHOOK
  143.           Vector    DB        ?              ; vector hooked
  144.           Entry     DW        ?              ; offset of TSR entry point
  145. ENDS
  146. STRUC     TSRSIG
  147.           Company   DB        8 dup (" ")    ; blank-padded company name
  148.           Product   DB        8 dup (" ")    ; blank-padded product name
  149.           Desc      DB        64 dup (0)     ; ASCIIZ product description
  150. ENDS
  151. GLOBAL at : PROC
  152. GLOBAL errmsg : PROC
  153.    GLOBAL ProgName : BYTE                    ; needed for errmsg()
  154.    GLOBAL EOL : BYTE                         ; ditto
  155. GLOBAL fgetc : PROC
  156. GLOBAL fputc : PROC
  157. GLOBAL fputs : PROC
  158. GLOBAL getchar : PROC
  159. GLOBAL getdate : PROC
  160. GLOBAL getswtch : PROC
  161. GLOBAL gettime : PROC
  162. GLOBAL getvdos : PROC
  163. GLOBAL getvect : PROC
  164. GLOBAL isatty : PROC
  165. GLOBAL kbhit : PROC
  166. GLOBAL pause : PROC
  167. GLOBAL putchar : PROC
  168. GLOBAL setvect : PROC
  169. GLOBAL sleep : PROC
  170. GLOBAL find_NextISR : PROC
  171. GLOBAL find_PrevISR : PROC
  172. GLOBAL hook_ISR : PROC
  173. GLOBAL unhook_ISR : PROC
  174. GLOBAL free_Env : PROC
  175. GLOBAL fake_Env : PROC
  176. GLOBAL check_ifInstalled : PROC
  177. GLOBAL install_TSR : PROC
  178. GLOBAL remove_TSR : PROC
  179.  
  180. GLOBAL atoi : PROC
  181. GLOBAL atou : PROC
  182. GLOBAL utoa : PROC
  183.  
  184. EOS